package leetcode.set_map;

import java.util.HashMap;

/**
 * @author: Oliver
 * @time: 2020/6/1/22:02
 * 387. 字符串中的第一个唯一字符
 * <p>
 * 给定一个字符串，找到它的第一个不重复的字符，并返回它的索引。如果不存在，则返回 -1。
 * <p>
 * 案例:
 * <p>
 * s = "leetcode"
 * 返回 0.
 * <p>
 * s = "loveleetcode",
 * 返回 2.
 * <p>
 * 当然也可以借助开辟一个26个字母的数组空间，这样一来需要定位索引位置 索引位置为  charAt(i)-'a'对应 0-25上的一个空间，然后进行记录每一个字符出现的次数。默认都为0
 */
class Solution387 {
    public int firstUniqChar(String s) {
        HashMap<Character, Integer> restMap = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (restMap.get(c) == null) {
                restMap.put(c, 1);
            } else {
                restMap.put(c, restMap.get(c) + 1);
            }
        }
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (restMap.get(c) == 1) {
                return i;
            }
        }
        return -1;
    }
}